//
// Created by cmz2000 on 2021/8/4.
//

#include "main.h"

void getURL(char *recvBuf, int byteNum) {
    char name[LENGTH];

    memset(URL, 0, LENGTH);
    memcpy(name, &recvBuf[12], byteNum - 16);//获取域名表示,前12字节为DNS报文头,后4字节为QTYPE、QCLASS,故总长度应为num-16

    int len = strlen(name);//域名长度，等于num-16

    // 域名转换
    int i = 0, count, j = 0;
    // i记录name, j记录最终的URL, count存储距离下个点的字符数
    // 报文中域名的表示形式如下
    // www.baidu.com 表示为 03 w w w 05 b a i d u 03 c o m 00
    while (i < len)
    {
        if (name[i] > 0 && name[i] <= 63)//计数值必须为0~63
            count = name[i];
        i++;
        for (; count > 0; count--, i++, j++)
            URL[j] = name[i];

        if (name[i] != 0)//name最终以0计数为结尾，结尾不用加上点
            URL[j++] = '.';
    }
    URL[j] = '\0';
}